package com.zoe.onelink.business.service;

import java.util.List;

public interface IBizService<T> {

    /**
     * 查询
     *
     * @param id id
     * @return 单条记录
     */
    T getById(String id) throws Exception;


    /**
     * 查询
     *
     * @param entity 实体
     * @return 单条记录
     */
    T get(T entity) throws Exception;

    /**
     * 查询列表
     *
     * @param entity 实体
     * @return 列表
     */
    List<T> findList(T entity) throws Exception;

    /**
     * 查询列表
     *
     * @param id 实体
     * @return 列表
     */
    List<T> findListById(String id) throws Exception;

    /**
     * 查询所有数据列表
     *
     * @param entity 实体
     * @return 列表
     */
    List<T> findAllList(T entity) throws Exception;

    /**
     * 插入
     *
     * @param entity 实体
     * @return 返回插入记录数
     */
    int insert(T entity) throws Exception;

    /**
     * 批量插入
     *
     * @param entityList 实体集合
     * @return 返回插入记录数
     */
    int insertBatch(List<T> entityList) throws Exception;

    /**
     * 批量插入
     * jdbc方式
     *
     * @param entityList 实体集合
     * @return 返回插入记录数
     */
    int insertBatchByJdbc(List<T> entityList) throws Exception;

    /**
     * 更新
     *
     * @param entity 实体
     * @return 返回更新记录数
     */
    int update(T entity) throws Exception;

    /**
     * 批量更新
     *
     * @param entityList 实体集合
     * @return 返回更新记录数
     */
    int updateBatch(List<T> entityList) throws Exception;

    /**
     * 批量更新
     * jdbc方式
     *
     * @param entityList 实体集合
     * @return 返回更新记录数
     */
    int updateBatchByJdbc(List<T> entityList) throws Exception;

    /**
     * 物理删除
     *
     * @param entity 实体
     * @return 返回删除记录数
     */
    int delete(T entity) throws Exception;

    /**
     * 批量删除
     * jdbc方式
     *
     * @param entityList 实体集合
     * @return 返回删除记录数
     */
    int deleteBatchByJdbc(List<T> entityList) throws Exception;

    /**
     * 批量物理删除(集合)
     *
     * @param list 集合
     * @return 返回删除记录数
     */
    int deleteBatchByList(List list) throws Exception;

    /**
     * 批量物理删除(数组)
     *
     * @param ids 数组
     * @return 返回删除记录数
     */
    int deleteBatchByString(String[] ids) throws Exception;

    /**
     * 更新有效标志（逻辑删除）
     *
     * @param entity 实体 必须传入 validFlag
     * @return 返回更新记录数
     */
    int updateValidFlag(T entity) throws Exception;
}
